home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 1 / LSD Compendium Deluxe 1.iso / a / programming / assembly / angint.s.lha / angels1.s < prev    next >
Encoding:
Text File  |  1980-02-15  |  25.6 KB  |  1,173 lines

  1. >extern "df0:data/filled",char
  2. >extern "df0:data/sinus",sine
  3. >extern "df0:data/logo",logo
  4. >extern "df0:data/tech",font
  5. >extern "df0:data/tristar",module
  6.  
  7. org $40000
  8. load $40000
  9. ;jmp $40000
  10.  
  11.     lea    $47000,a0
  12.     move.l    a0,a1
  13.     lea    col1,a2
  14.     move.w    #$0180,d0
  15.     moveq    #15,d7
  16. initc:    move.w    d0,(a0)+
  17.     addq.w    #2,d0
  18.     move.w    (a2)+,(a0)+
  19.     dbra    d7,initc
  20.     move.l    #$00e00005,(a0)+
  21.     move.l    #$00e20000,(a0)+
  22.     move.l    #$00e40005,(a0)+
  23.     move.l    #$00e60910,(a0)+
  24.     move.l    #$00e80005,(a0)+
  25.     move.l    #$00ea1220,(a0)+
  26.     move.l    #$00ec0005,(a0)+
  27.     move.l    #$00ee1b30,(a0)+
  28.     move.l    #$01004200,(a0)+
  29.     move.l    #$01080000,(a0)+
  30.     move.l    #$010a0000,(a0)+
  31.     move.l    #$01700000,(a0)+
  32.     move.l    #$01740000,(a0)+
  33.     move.l    #$01780000,(a0)+
  34.     move.l    #$017e0000,(a0)+
  35.     move.w    #$01a0,d0
  36.     moveq    #3,d7
  37. initsc:    move.w    d0,(a0)+
  38.     addq.w    #2,d0
  39.     move.w    #0,(a0)+
  40.     move.w    d0,(a0)+
  41.     addq.w    #2,d0
  42.     move.w    #$888,(a0)+
  43.     move.w    d0,(a0)+
  44.     addq.w    #2,d0
  45.     move.w    #$ccc,(a0)+
  46.     move.w    d0,(a0)+
  47.     addq.w    #2,d0
  48.     move.w    #$555,(a0)+
  49.     dbra    d7,initsc
  50.     move.l    #$61e1fffe,(a0)+
  51.     move.l    #$01800f00,(a0)+
  52.     move.l    #$62e1fffe,(a0)+
  53.     move.l    #$01800000,(a0)+
  54.     move.l    #$01820fff,(a0)+
  55.     move.l    #$01840888,(a0)+
  56.     move.l    #$01860888,(a0)+
  57.     move.l    #$019200f0,(a0)+
  58.     move.l    #$00e00005,(a0)+
  59.     move.l    #$00e22440,(a0)+
  60.     move.l    #$00e40005,(a0)+
  61.     move.l    #$00e64e40,(a0)+
  62.     move.l    #$00e80005,(a0)+
  63.     move.l    #$00ea23ec,(a0)+
  64.     move.l    #$01080002,(a0)+
  65.     move.l    #$010a0002,(a0)+
  66.     move.l    #$01003400,(a0)+
  67.  
  68.     moveq    #$63,d0
  69. loop:    bsr    rnd            ; get random number
  70.     move.b  d0,(a0)+    
  71.     move.b    #$e1,(a0)+        ; insert copper-wait
  72.     move.w    #$fffe,(a0)+
  73.     move.w    #$0170,(a0)+        ; init spr0pos
  74.     move.b    #0,(a0)+
  75.     move.b    d6,(a0)+
  76.     move.l    #$01740001,(a0)+    ; init spr0data
  77.     move.w    #$0178,(a0)+        ; init spr1pos
  78.     move.b    #28,(a0)+
  79.     bsr    rnd            ; get new random number
  80.     move.b    d6,(a0)+
  81.     move.l    #$017e0003,(a0)+    ; init spr1datb
  82.     addq.b    #1,d0
  83.     cmp.b    #$fe,d0
  84.     bne    loop    
  85.  
  86.     move.l    #$fee1fffe,(a0)+
  87.     move.l    #$01800f00,(a0)+
  88.     move.l    #$ffe1fffe,(a0)+
  89.     move.l    #$01800000,(a0)+
  90.     move.l    #$01700000,(a0)+
  91.     move.l    #$01740000,(a0)+
  92.     move.l    #$01780000,(a0)+
  93.     move.l    #$017e0000,(a0)+
  94.     move.l    #$01000200,(a0)+
  95.     move.l    #$fffffffe,(a0)+    ; end of list (ha,ha !)
  96.  
  97.     lea    $50000,a0
  98.     move.l    #$288f,d7        ; clear bit-planes
  99. clear:    move.l    #0,(a0)+
  100.     dbra    d7,clear
  101.  
  102. start:    move.w    #$4000,$dff09a
  103.     move.w    #$03e0,$dff096
  104.     move.l    a1,$dff080
  105.     clr.w    $dff088
  106.     move.w    #$2981,$dff08e
  107.     move.w    #$29c1,$dff090
  108.     move.w    #$0038,$dff092
  109.     move.w    #$00d0,$dff094
  110.     move.w    #$83c0,$dff096
  111.     move.w    #0,$dff104
  112.     move.l    #0,$dff144
  113.     bsr    init_music
  114.     lea     $dff000,a0
  115.     lea    logo,a1
  116.     lea    $50000,a2
  117.     move.l    #-1,$44(a0)
  118.     move.w    #$09f0,$40(a0)
  119.     move.w    #0,$42(a0)
  120.     move.l    #0,$64(a0)
  121.     moveq    #3,d7
  122. copy:    btst    #14,2(a0)
  123.     bne    copy
  124.     move.l    a1,$50(a0)
  125.     move.l    a2,$54(a0)
  126.     move.w    #56*64+20,$58(a0)
  127.     addi.l    #56*40,a1
  128.     addi.l    #58*40,a2
  129.     dbra    d7,copy
  130.     bsr    inton        ; switch interrupt on
  131.     lea    text1,a4
  132.     bsr    write
  133.     lea    sine,a4
  134.     lea    text,a0
  135. main:    bsr    syn    
  136.     movem.l    a0-a6/d0-d7,-(a7)
  137.     bsr    play
  138.     movem.l    (a7)+,a0-a6/d0-d7
  139.     bsr    scroll
  140.     btst    #6,$bfe001
  141.     bne    main
  142.  
  143.     ; End of program !!! Reset all !!! ***
  144.  
  145.     bsr    intoff        ; switch interrupt off
  146.     bsr    end_music
  147. waitblt:btst    #14,$dff002
  148.     bne    waitblt
  149.  
  150. reset:    move.l    4.w,a6
  151.     move.l    (a6),a5        ; great trick, eh ?
  152.     move.l    (a5),a5
  153.     move.l    38(a5),$dff080
  154.     clr.w    $dff088
  155.     move.w    #$c000,$dff09a
  156.     moveq    #0,d0
  157.     move.l    #0,$dff174
  158.     move.l    #0,$dff17e
  159.     rts
  160.  
  161.     ; Sub-Routines !!! ***
  162.  
  163. syn:    move.w  $dff006,d7
  164.     lsr.w   #8,d7
  165.     cmpi.w  #255,d7
  166.     bne     syn
  167.     move.w  $dff004,d7
  168.     andi.l  #1,d7
  169.     bne     syn
  170.     rts
  171.  
  172. rnd:    moveq    #0,d6            ; returns a random number
  173.     move.b    $bfea01,d4        ; in d6 !
  174.     move.b    $dff007,d5
  175.     move.b    $bfe801,d6
  176.     mulu    d5,d4
  177.     add.w    d4,d5
  178.     add.w    d5,d6
  179.     add.w    d6,d6
  180.     rts
  181.  
  182. scroll:
  183.     move.l  m1,d7
  184.     addq.w  #1,d7
  185.     cmp.w   #8,d7
  186.     bne     do
  187.     moveq   #0,d7
  188.     move.w  d7,m1+2    
  189.     move.l    d7,d0
  190.     move.b    (a0)+,d0
  191.     bne    normal
  192.     lea     text,a0
  193.     move.b  (a0)+,d0 
  194. normal:    cmpi.b    #32,d0
  195.     bne    nospace
  196.     move.b    #111,d0
  197.     bra    space
  198. nospace:lea    ascii,a1
  199.     moveq    #0,d1
  200. search:    addq.b    #1,d1
  201.     cmp.b    (a1)+,d0
  202.     bne    search
  203.     lea    my,a1
  204.     move.b    -1(a1,d1),d0
  205. space:    subi.b    #65,d0
  206.     lsl.w    #5,d0
  207.     lea    char,a1
  208.     add.w    d0,a1
  209.     lea    $52440,a2    
  210.     addi.l    #222*42+40,a2
  211.     move.l    a2,$dff054
  212.     move.l    a1,$dff050
  213.     move.l    #-1,$dff044
  214.     move.w    #0,$dff064
  215.     move.w    #40,$dff066
  216.     move.w    #$09f0,$dff040
  217.     move.w    #0,$dff042
  218.     move.w    #16*64+1,$dff058
  219. WBlit:    btst    #14,$dff002
  220.     bne    WBlit
  221. do:    move.w  d7,m1+2
  222.     lea    $52440,a1
  223.     addi.l    #222*42,a1
  224.     move.l    #0,$dff064
  225.     move.w    #$e9f0,$dff040
  226.     move.l    a1,$dff050
  227.     subq.l    #2,a1
  228.     move.l    a1,$dff054
  229.     move.w    #17*64+21,$dff058
  230. WBlit2:    btst    #14,$dff002
  231.     bne.s    wblit2
  232.     lea    $52440,a5
  233.     move.l  a5,a3
  234.     addi.l    #42*222,a5
  235.     subi.l    #42*30,a3
  236.     moveq    #19,d6
  237.     moveq   #40,d4
  238.     move.w    #$07ca,$dff040
  239.     move.w  d4,$dff060
  240.     move.w  d4,$dff062
  241.     move.w    d4,$dff066
  242.     moveq   #0,d4
  243.     lea     sine,a4
  244. sinus2:    move.w  #$8000,d3  
  245.     moveq      #15,d7
  246. sinus:    move.l    (a4)+,d5
  247.     add.l    a3,d5
  248. WBlit3:    btst    #14,$dff002
  249.     bne    WBlit3
  250.     move.l  d5,$dff048
  251.     move.l  a5,$dff04c
  252.     move.l    d5,$dff054
  253.     move.w  d3,$dff074
  254.     move.w    #16*64+1,$dff058
  255.     ror.w   #1,d3
  256.     dbra    d7,sinus
  257.     addq.l    #2,a5
  258.     addq.w  #2,a3
  259.     dbra    d6,sinus2
  260.     rts
  261.  
  262. print:    moveq    #7,d7
  263.     lea    $54ee8,a1
  264.     add.l    pos,a1
  265.     addq.l    #1,pos
  266. print1:    move.b    (a2)+,(a1)
  267.     addi.l    #42,a1
  268.     dbra    d7,print1
  269.     rts
  270.  
  271. write:    moveq    #0,d0
  272.     move.b    (a4)+,d0
  273.     bne    no_end
  274.     rts
  275. no_end:    cmpi.b    #2,d0
  276.     bne    test_lf
  277.     addi.l    #42*9,pos
  278.     bra    write
  279. test_lf:cmpi.b    #1,d0
  280.     bne    test_sp
  281.     addi.l    #42*9+2,pos
  282.     bra    write
  283. test_sp:cmpi.b    #32,d0
  284.     bne    nosp
  285.     move.b    #111,d0
  286.     bra    spa
  287. nosp:    lea    ascii1,a1
  288.     moveq    #0,d1
  289. find:    addq.b    #1,d1
  290.     cmpi.b    (a1)+,d0
  291.     bne    find
  292.     lea    my,a1
  293.     move.b    -1(a1,d1),d0
  294. spa:    subi.b    #65,d0
  295.     lsl.l    #3,d0
  296.     lea    font,a2
  297.     add.l    d0,a2
  298.     bsr    print
  299.     bra    write
  300.     rts
  301.  
  302. *************************************************************
  303. **  Amiga FUTURE COMPOSER V1.0 / V1.2  --  Replay routine  **
  304. *************************************************************
  305.  
  306. END_MUSIC:
  307. clr.w onoff
  308. clr.l $dff0a6
  309. clr.l $dff0b6
  310. clr.l $dff0c6
  311. clr.l $dff0d6
  312. move.w #$000f,$dff096
  313. bclr #1,$bfe001
  314. rts
  315.  
  316. INIT_MUSIC:
  317. move.w #1,onoff
  318. bset #1,$bfe001
  319. lea MODULE,a0
  320. lea 100(a0),a1
  321. move.l a1,SEQpoint
  322. move.l a0,a1
  323. add.l 8(a0),a1
  324. move.l a1,PATpoint
  325. move.l a0,a1
  326. add.l 16(a0),a1
  327. move.l a1,FRQpoint
  328. move.l a0,a1
  329. add.l 24(a0),a1
  330. move.l a1,VOLpoint
  331. move.l 4(a0),d0
  332. divu #13,d0
  333.  
  334. lea 40(a0),a1
  335. lea SOUNDINFO+4(pc),a2
  336. moveq #10-1,d1
  337. initloop:
  338. move.w (a1)+,(a2)+
  339. move.l (a1)+,(a2)+
  340. addq.w #4,a2
  341. dbf d1,initloop
  342. moveq #0,d2
  343. move.l a0,d1
  344. add.l 32(a0),d1
  345. sub.l #WAVEFORMS,d1
  346. lea SOUNDINFO(pc),a0
  347. move.l d1,(a0)+
  348. moveq #9-1,d3
  349. initloop1:
  350. move.w (a0),d2
  351. add.l d2,d1
  352. add.l d2,d1
  353. addq.w #6,a0
  354. move.l d1,(a0)+
  355. dbf d3,initloop1
  356.  
  357. move.l SEQpoint(pc),a0
  358. moveq #0,d2
  359. move.b 12(a0),d2        ;Get replay speed
  360. bne.s speedok
  361. move.b #3,d2            ;Set default speed
  362. speedok:
  363. move.w d2,respcnt        ;Init repspeed counter
  364. move.w d2,repspd
  365. INIT2:
  366. clr.w audtemp
  367. move.w #$000f,$dff096        ;Disable audio DMA
  368. move.w #$0780,$dff09a        ;Disable audio IRQ
  369. moveq #0,d7
  370. mulu #13,d0
  371. moveq #4-1,d6            ;Number of soundchannels-1
  372. lea V1data(pc),a0        ;Point to 1st voice data area
  373. lea silent(pc),a1
  374. lea o4a0c8(pc),a2
  375. initloop2:
  376. move.l a1,10(a0)
  377. move.l a1,18(a0)
  378. clr.l 14(a0)
  379. clr.b 45(a0)
  380. clr.b 47(a0)
  381. clr.w 8(a0)
  382. clr.l 48(a0)
  383. move.b #$01,23(a0)
  384. move.b #$01,24(a0)
  385. clr.b 25(a0)
  386. clr.l 26(a0)
  387. clr.w 30(a0)
  388. moveq #$00,d3
  389. move.w (a2)+,d1
  390. move.w (a2)+,d3
  391. divu #$0003,d3
  392. move.b d3,32(a0)
  393. mulu #$0003,d3
  394. andi.l #$00ff,d3
  395. andi.l #$00ff,d1
  396. addi.l #$dff0a0,d1
  397. move.l d1,a6
  398. move.l #$0000,(a6)
  399. move.w #$0100,4(a6)
  400. move.w #$0000,6(a6)
  401. move.w #$0000,8(a6)
  402. move.l d1,60(a0)
  403. clr.w 64(a0)
  404. move.l SEQpoint(pc),(a0)
  405. move.l SEQpoint(pc),52(a0)
  406. add.l d0,52(a0)
  407. add.l d3,52(a0)
  408. add.l d7,(a0)
  409. add.l d3,(a0)
  410. move.w #$000d,6(a0)
  411. move.l (a0),a3
  412. move.b (a3),d1
  413. andi.l #$00ff,d1
  414. lsl.w #6,d1
  415. move.l PATpoint(pc),a4
  416. adda.w d1,a4
  417. move.l a4,34(a0)
  418. clr.l 38(a0)
  419. move.b #$01,33(a0)
  420. move.b #$02,42(a0)
  421. move.b 1(a3),44(a0)
  422. move.b 2(a3),22(a0)
  423. clr.b 43(a0)
  424. clr.b 45(a0)
  425. clr.w 56(a0)
  426. adda.w #$004a,a0    ;Point to next voice's data area
  427. dbf d6,initloop2
  428. rts
  429.  
  430.  
  431. PLAY:
  432. lea pervol(pc),a6
  433. tst.w onoff
  434. bne.s music_on
  435. rts
  436. music_on:
  437. subq.w #1,respcnt        ;Decrease replayspeed counter
  438. bne.s nonewnote
  439. move.w repspd(pc),respcnt    ;Restore replayspeed counter
  440. lea V1data(pc),a0        ;Point to voice1 data area
  441. bsr.L new_note
  442. lea V2data(pc),a0        ;Point to voice2 data area
  443. bsr.L new_note
  444. lea V3data(pc),a0        ;Point to voice3 data area
  445. bsr.L new_note
  446. lea V4data(pc),a0        ;Point to voice4 data area
  447. bsr.L new_note
  448. nonewnote:
  449. clr.w audtemp
  450. lea V1data(pc),a0
  451. bsr.L effects
  452. move.w d0,(a6)+
  453. move.w d1,(a6)+
  454. lea V2data(pc),a0
  455. bsr.L effects
  456. move.w d0,(a6)+
  457. move.w d1,(a6)+
  458. lea V3data(pc),a0
  459. bsr.L effects
  460. move.w d0,(a6)+
  461. move.w d1,(a6)+
  462. lea V4data(pc),a0
  463. bsr.L effects
  464. move.w d0,(a6)+
  465. move.w d1,(a6)+
  466. lea pervol(pc),a6
  467. move.w audtemp(pc),d0
  468. ori.w #$8000,d0            ;Set/clr bit = 1
  469. move.w d0,-(a7)
  470. moveq #0,d1
  471. move.l start1(pc),d2        ;Get samplepointers
  472. move.w offset1(pc),d1        ;Get offset
  473. add.l d1,d2            ;Add offset
  474. move.l start2(pc),d3
  475. move.w offset2(pc),d1
  476. add.l d1,d3
  477. move.l start3(pc),d4
  478. move.w offset3(pc),d1
  479. add.l d1,d4
  480. move.l start4(pc),d5
  481. move.w offset4(pc),d1
  482. add.l d1,d5
  483. move.w ssize1(pc),d0        ;Get sound lengths
  484. move.w ssize2(pc),d1
  485. move.w ssize3(pc),d6
  486. move.w ssize4(pc),d7
  487. move.w (a7)+,$dff096        ;Enable audio DMA
  488. chan1:
  489. lea V1data(pc),a0
  490. tst.w 72(a0)
  491. beq.l chan2
  492. subq.w #1,72(a0)
  493. cmpi.w #1,72(a0)
  494. bne.s chan2
  495. clr.w 72(a0)
  496. move.l d2,$dff0a0        ;Set soundstart
  497. move.w d0,$dff0a4        ;Set soundlength
  498. chan2:
  499. lea V2data(pc),a0
  500. tst.w 72(a0)
  501. beq.s chan3
  502. subq.w #1,72(a0)
  503. cmpi.w #1,72(a0)
  504. bne.s chan3
  505. clr.w 72(a0)
  506. move.l d3,$dff0b0
  507. move.w d1,$dff0b4
  508. chan3:
  509. lea V3data(pc),a0
  510. tst.w 72(a0)
  511. beq.s chan4
  512. subq.w #1,72(a0)
  513. cmpi.w #1,72(a0)
  514. bne.s chan4
  515. clr.w 72(a0)
  516. move.l d4,$dff0c0
  517. move.w d6,$dff0c4
  518. chan4:
  519. lea V4data(pc),a0
  520. tst.w 72(a0)
  521. beq.s setpervol
  522. subq.w #1,72(a0)
  523. cmpi.w #1,72(a0)
  524. bne.s setpervol
  525. clr.w 72(a0)
  526. move.l d5,$dff0d0
  527. move.w d7,$dff0d4
  528. setpervol:
  529. lea $dff0a6,a5
  530. move.w (a6)+,(a5)    ;Set period
  531. move.w (a6)+,2(a5)    ;Set volume
  532. move.w (a6)+,16(a5)
  533. move.w (a6)+,18(a5)
  534. move.w (a6)+,32(a5)
  535. move.w (a6)+,34(a5)
  536. move.w (a6)+,48(a5)
  537. move.w (a6)+,50(a5)
  538. rts
  539.  
  540. NEW_NOTE:
  541. moveq #0,d5
  542. move.l 34(a0),a1
  543. adda.w 40(a0),a1
  544. cmp.w #64,40(a0)
  545. bne.s samepat
  546. move.l (a0),a2
  547. adda.w 6(a0),a2        ;Point to next sequence row
  548. cmpa.l 52(a0),a2    ;Is it the end?
  549. bne.s notend
  550. move.w d5,6(a0)        ;yes!
  551. move.l (a0),a2        ;Point to first sequence
  552. notend:
  553. moveq #0,d1
  554. addq.b #1,spdtemp
  555. cmpi.b #4,spdtemp
  556. bne.s nonewspd
  557. move.b d5,spdtemp
  558. move.b -1(a1),d1    ;Get new replay speed
  559. beq.s nonewspd
  560. move.w d1,respcnt    ;store in counter
  561. move.w d1,repspd
  562. nonewspd:
  563. move.b (a2),d1        ;Pattern to play
  564. move.b 1(a2),44(a0)    ;Transpose value
  565. move.b 2(a2),22(a0)    ;Soundtranspose value
  566.  
  567. move.w d5,40(a0)
  568. lsl.w #6,d1
  569. add.l PATpoint(pc),d1    ;Get pattern pointer
  570. move.l d1,34(a0)
  571. addi.w #$000d,6(a0)
  572. move.l d1,a1
  573. samepat:
  574. move.b 1(a1),d1        ;Get info byte
  575. move.b (a1)+,d0        ;Get note
  576. bne.s ww1
  577. andi.w #%11000000,d1
  578. beq.s noport
  579. bra.s ww11
  580. ww1:
  581. move.w d5,56(a0)
  582. ww11:
  583. move.b d5,47(a0)
  584. move.b (a1),31(a0)
  585.  
  586.         ;31(a0) = PORTAMENTO/INSTR. info
  587.             ;Bit 7 = portamento on
  588.             ;Bit 6 = portamento off
  589.             ;Bit 5-0 = instrument number
  590.         ;47(a0) = portamento value
  591.             ;Bit 7-5 = always zero
  592.             ;Bit 4 = up/down
  593.             ;Bit 3-0 = value
  594. t_porton:
  595. btst #7,d1
  596. beq.s noport
  597. move.b 2(a1),47(a0)    
  598. noport:
  599. andi.w #$007f,d0
  600. beq.s nextnote
  601. move.b d0,8(a0)
  602. move.b (a1),9(a0)
  603. move.b 32(a0),d2
  604. moveq #0,d3
  605. bset d2,d3
  606. or.w d3,audtemp
  607. move.w d3,$dff096
  608. move.b (a1),d1
  609. andi.w #$003f,d1    ;Max 64 instruments
  610. add.b 22(a0),d1
  611. move.l VOLpoint(pc),a2
  612. lsl.w #6,d1
  613. adda.w d1,a2
  614. move.w d5,16(a0)
  615. move.b (a2),23(a0)
  616. move.b (a2)+,24(a0)
  617. move.b (a2)+,d1
  618. andi.w #$00ff,d1
  619. move.b (a2)+,27(a0)
  620. move.b #$40,46(a0)
  621. move.b (a2)+,d0
  622. move.b d0,28(a0)
  623. move.b d0,29(a0)
  624. move.b (a2)+,30(a0)
  625. move.l a2,10(a0)
  626. move.l FRQpoint(pc),a2
  627. lsl.w #6,d1
  628. adda.w d1,a2
  629. move.l a2,18(a0)
  630. move.w d5,50(a0)
  631. move.b d5,26(a0)
  632. move.b d5,25(a0)
  633. nextnote:
  634. addq.w #2,40(a0)
  635. rts
  636.  
  637. EFFECTS:
  638. moveq #0,d7
  639. testsustain:
  640. tst.b 26(a0)        ;Is sustain counter = 0
  641. beq.s sustzero
  642. subq.b #1,26(a0)    ;if no, decrease counter
  643. bra.L VOLUfx
  644. sustzero:        ;Next part of effect sequence
  645. move.l 18(a0),a1    ;can be executed now.
  646. adda.w 50(a0),a1
  647. testeffects:
  648. cmpi.b #$e1,(a1)    ;E1 = end of FREQseq sequence
  649. beq.L VOLUfx
  650. cmpi.b #$e0,(a1)    ;E0 = loop to other part of sequence
  651. bne.s testnewsound
  652. move.b 1(a1),d0        ;loop to start of sequence + 1(a1)
  653. andi.w #$003f,d0
  654. move.w d0,50(a0)
  655. move.l 18(a0),a1
  656. adda.w d0,a1
  657. testnewsound:
  658. cmpi.b #$e2,(a1)    ;E2 = set waveform
  659. bne.s o49c64
  660. moveq #0,d0
  661. moveq #0,d1
  662. move.b 32(a0),d1
  663. bset d1,d0
  664. or.w d0,audtemp
  665. move.w d0,$dff096
  666. move.b 1(a1),d0
  667. andi.w #$00ff,d0
  668. lea SOUNDINFO(pc),a4
  669. add.w d0,d0
  670. move.w d0,d1
  671. add.w d1,d1
  672. add.w d1,d1
  673. add.w d1,d0
  674. adda.w d0,a4
  675. move.l 60(a0),a3
  676. move.l (a4),d1
  677. add.l #WAVEFORMS,d1
  678. move.l d1,(a3)
  679. move.l d1,68(a0)
  680. move.w 4(a4),4(a3)
  681. move.l 6(a4),64(a0)
  682. swap d1
  683. move.w #$0003,72(a0)
  684. tst.w d1
  685. bne.s o49c52
  686. move.w #$0002,72(a0)
  687. o49c52:
  688. clr.w 16(a0)
  689. move.b #$01,23(a0)
  690. addq.w #2,50(a0)
  691. bra.L o49d02
  692. o49c64:
  693. cmpi.b #$e4,(a1)
  694. bne.s testpatjmp
  695. move.b 1(a1),d0
  696. andi.w #$00ff,d0
  697. lea SOUNDINFO(pc),a4
  698. add.w d0,d0
  699. move.w d0,d1
  700. add.w d1,d1
  701. add.w d1,d1
  702. add.w d1,d0
  703. adda.w d0,a4
  704. move.l 60(a0),a3
  705. move.l (a4),d1
  706. add.l #WAVEFORMS,d1
  707. move.l d1,(a3)
  708. move.l d1,68(a0)
  709. move.w 4(a4),4(a3)
  710. move.l 6(a4),64(a0)
  711.  
  712. swap d1
  713. move.w #$0003,72(a0)
  714. tst.w d1
  715. bne.s o49cae
  716. move.w #$0002,72(a0)
  717. o49cae:
  718. addq.w #2,50(a0)
  719. bra.s o49d02
  720. testpatjmp:
  721. cmpi.b #$e7,(a1)
  722. bne.s testnewsustain
  723. move.b 1(a1),d0
  724. andi.w #$00ff,d0
  725. lsl.w #6,d0
  726. move.l FRQpoint(pc),a1
  727. adda.w d0,a1
  728. move.l a1,18(a0)
  729. move.w d7,50(a0)
  730. bra.L testeffects
  731. testnewsustain:
  732. cmpi.b #$e8,(a1)    ;E8 = set sustain time
  733. bne.s o49cea
  734. move.b 1(a1),26(a0)
  735. addq.w #2,50(a0)
  736. bra.L testsustain
  737. o49cea:
  738. cmpi.b #$e3,(a1)
  739. bne.s o49d02
  740. addq.w #3,50(a0)
  741. move.b 1(a1),27(a0)
  742. move.b 2(a1),28(a0)
  743. o49d02:
  744. move.l 18(a0),a1
  745. adda.w 50(a0),a1
  746. move.b (a1),43(a0)
  747. addq.w #1,50(a0)
  748. VOLUfx:
  749. tst.b 25(a0)
  750. beq.s o49d1e
  751. subq.b #1,25(a0)
  752. bra.s o49d70
  753. o49d1e:
  754. subq.b #1,23(a0)
  755. bne.s o49d70
  756. move.b 24(a0),23(a0)
  757. o49d2a:
  758. move.l 10(a0),a1
  759. adda.w 16(a0),a1
  760. move.b (a1),d0
  761. cmpi.b #$e8,d0
  762. bne.s o49d4a
  763. addq.w #2,16(a0)
  764. move.b 1(a1),25(a0)
  765. bra.s VOLUfx
  766. o49d4a:
  767. cmpi.b #$e1,d0
  768. beq.s o49d70
  769. cmpi.b #$e0,d0
  770. bne.s o49d68
  771. move.b 1(a1),d0
  772. andi.l #$003f,d0
  773. subq.b #5,d0
  774. move.w d0,16(a0)
  775. bra.s o49d2a
  776. o49d68:
  777. move.b (a1),45(a0)
  778. addq.w #1,16(a0)
  779. o49d70:
  780. move.b 43(a0),d0
  781. bmi.s o49d7e
  782. add.b 8(a0),d0
  783. add.b 44(a0),d0
  784. o49d7e:
  785. andi.w #$007f,d0
  786. lea PERIODS(pc),a1
  787. add.w d0,d0
  788. move.w d0,d1
  789. adda.w d0,a1
  790. move.w (a1),d0
  791. move.b 46(a0),d7
  792. tst.b 30(a0)
  793. beq.s o49d9e
  794. subq.b #1,30(a0)
  795.  
  796. bra.s o49df4
  797. o49d9e:
  798. move.b d1,d5
  799. move.b 28(a0),d4
  800. add.b d4,d4
  801. move.b 29(a0),d1
  802. tst.b d7
  803. bpl.s o49db4
  804. btst #0,d7
  805. bne.s o49dda
  806. o49db4:
  807. btst #5,d7
  808. bne.s o49dc8
  809. sub.b 27(a0),d1
  810. bcc.s o49dd6
  811. bset #5,d7
  812. moveq #0,d1
  813. bra.s o49dd6
  814. o49dc8:
  815. add.b 27(a0),d1
  816. cmp.b d4,d1
  817. bcs.s o49dd6
  818. bclr #5,d7
  819. move.b d4,d1
  820. o49dd6:
  821. move.b d1,29(a0)
  822. o49dda:
  823. lsr.b #1,d4
  824. sub.b d4,d1
  825. bcc.s o49de4
  826. subi.w #$0100,d1
  827. o49de4:
  828. addi.b #$a0,d5
  829. bcs.s o49df2
  830. o49dea:
  831. add.w d1,d1
  832. addi.b #$18,d5
  833. bcc.s o49dea
  834. o49df2:
  835. add.w d1,d0
  836. o49df4:
  837. eori.b #$01,d7
  838. move.b d7,46(a0)
  839.  
  840. ; DO THE PORTAMENTO THING
  841. moveq #0,d1
  842. move.b 47(a0),d1    ;get portavalue
  843. beq.s a56d0        ;0=no portamento
  844. cmpi.b #$1f,d1
  845. bls.s portaup
  846. portadown: 
  847. andi.w #$1f,d1
  848. neg.w d1
  849. portaup:
  850. sub.w d1,56(a0)
  851. a56d0:
  852. add.w 56(a0),d0
  853. o49e3e:
  854. cmpi.w #$0070,d0
  855. bhi.s nn1
  856. move.w #$0071,d0
  857. nn1:
  858. cmpi.w #$06b0,d0
  859. bls.s nn2
  860. move.w #$06b0,d0
  861. nn2:
  862. moveq #0,d1
  863. move.b 45(a0),d1
  864. rts
  865.  
  866.  
  867.  
  868. pervol: blk.b 16,0    ;Periods & Volumes temp. store
  869. respcnt: dc.w 0        ;Replay speed counter 
  870. repspd:  dc.w 0        ;Replay speed counter temp
  871. onoff:   dc.w 0        ;Music on/off flag.
  872. firseq:     dc.w 0        ;First sequence
  873. lasseq:     dc.w 0        ;Last sequence
  874. audtemp: dc.w 0
  875. spdtemp: dc.w 0
  876.  
  877. V1data:  blk.b 64,0    ;Voice 1 data area
  878. offset1: blk.b 02,0    ;Is added to start of sound
  879. ssize1:  blk.b 02,0    ;Length of sound
  880. start1:  blk.b 06,0    ;Start of sound
  881.  
  882. V2data:  blk.b 64,0    ;Voice 2 data area
  883. offset2: blk.b 02,0
  884. ssize2:  blk.b 02,0
  885. start2:  blk.b 06,0
  886.  
  887. V3data:  blk.b 64,0    ;Voice 3 data area
  888. offset3: blk.b 02,0
  889. ssize3:  blk.b 02,0
  890. start3:  blk.b 06,0
  891.  
  892. V4data:  blk.b 64,0    ;Voice 4 data area
  893. offset4: blk.b 02,0
  894. ssize4:  blk.b 02,0
  895. start4:  blk.b 06,0
  896.  
  897. o4a0c8: dc.l $00000000,$00100003,$00200006,$00300009
  898. SEQpoint: dc.l 0
  899. PATpoint: dc.l 0
  900. FRQpoint: dc.l 0
  901. VOLpoint: dc.l 0
  902.  
  903.  
  904. even
  905. SILENT: dc.w $0100,$0000,$0000,$00e1
  906.  
  907. PERIODS:dc.w $06b0,$0650,$05f4,$05a0,$054c,$0500,$04b8,$0474
  908.     dc.w $0434,$03f8,$03c0,$038a,$0358,$0328,$02fa,$02d0
  909.     dc.w $02a6,$0280,$025c,$023a,$021a,$01fc,$01e0,$01c5
  910.     dc.w $01ac,$0194,$017d,$0168,$0153,$0140,$012e,$011d
  911.     dc.w $010d,$00fe,$00f0,$00e2,$00d6,$00ca,$00be,$00b4
  912.     dc.w $00aa,$00a0,$0097,$008f,$0087,$007f,$0078,$0071
  913.     dc.w $0071,$0071,$0071,$0071,$0071,$0071,$0071,$0071
  914.     dc.w $0071,$0071,$0071,$0071,$0d60,$0ca0,$0be8,$0b40
  915.     dc.w $0a98,$0a00,$0970,$08e8,$0868,$07f0,$0780,$0714
  916.     dc.w $1ac0,$1940,$17d0,$1680,$1530,$1400,$12e0,$11d0
  917.     dc.w $10d0,$0fe0,$0f00,$0e28
  918.  
  919. SOUNDINFO:
  920. ;Offset.l , Sound-length.w , Start-offset.w , Repeat-length.w 
  921.  
  922. ;Reserved for samples
  923.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  924.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  925.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  926.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  927.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  928.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  929.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  930.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  931.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  932.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  933. ;Reserved for synth sounds
  934.     dc.w $0000,$0000 ,$0010 ,$0000 ,$0010 
  935.     dc.w $0000,$0020 ,$0010 ,$0000 ,$0010 
  936.     dc.w $0000,$0040 ,$0010 ,$0000 ,$0010 
  937.     dc.w $0000,$0060 ,$0010 ,$0000 ,$0010 
  938.     dc.w $0000,$0080 ,$0010 ,$0000 ,$0010 
  939.     dc.w $0000,$00a0 ,$0010 ,$0000 ,$0010 
  940.     dc.w $0000,$00c0 ,$0010 ,$0000 ,$0010 
  941.     dc.w $0000,$00e0 ,$0010 ,$0000 ,$0010 
  942.     dc.w $0000,$0100 ,$0010 ,$0000 ,$0010 
  943.     dc.w $0000,$0120 ,$0010 ,$0000 ,$0010 
  944.     dc.w $0000,$0140 ,$0010 ,$0000 ,$0010 
  945.     dc.w $0000,$0160 ,$0010 ,$0000 ,$0010 
  946.     dc.w $0000,$0180 ,$0010 ,$0000 ,$0010 
  947.     dc.w $0000,$01a0 ,$0010 ,$0000 ,$0010 
  948.     dc.w $0000,$01c0 ,$0010 ,$0000 ,$0010 
  949.     dc.w $0000,$01e0 ,$0010 ,$0000 ,$0010 
  950.     dc.w $0000,$0200 ,$0010 ,$0000 ,$0010 
  951.     dc.w $0000,$0220 ,$0010 ,$0000 ,$0010 
  952.     dc.w $0000,$0240 ,$0010 ,$0000 ,$0010 
  953.     dc.w $0000,$0260 ,$0010 ,$0000 ,$0010 
  954.     dc.w $0000,$0280 ,$0010 ,$0000 ,$0010 
  955.     dc.w $0000,$02a0 ,$0010 ,$0000 ,$0010 
  956.     dc.w $0000,$02c0 ,$0010 ,$0000 ,$0010 
  957.     dc.w $0000,$02e0 ,$0010 ,$0000 ,$0010 
  958.     dc.w $0000,$0300 ,$0010 ,$0000 ,$0010 
  959.     dc.w $0000,$0320 ,$0010 ,$0000 ,$0010 
  960.     dc.w $0000,$0340 ,$0010 ,$0000 ,$0010 
  961.     dc.w $0000,$0360 ,$0010 ,$0000 ,$0010 
  962.     dc.w $0000,$0380 ,$0010 ,$0000 ,$0010 
  963.     dc.w $0000,$03a0 ,$0010 ,$0000 ,$0010 
  964.     dc.w $0000,$03c0 ,$0010 ,$0000 ,$0010 
  965.     dc.w $0000,$03e0 ,$0010 ,$0000 ,$0010 
  966.     dc.w $0000,$0400 ,$0008 ,$0000 ,$0008 
  967.     dc.w $0000,$0410 ,$0008 ,$0000 ,$0008 
  968.     dc.w $0000,$0420 ,$0008 ,$0000 ,$0008 
  969.     dc.w $0000,$0430 ,$0008 ,$0000 ,$0008 
  970.     dc.w $0000,$0440 ,$0008 ,$0000 ,$0008
  971.     dc.w $0000,$0450 ,$0008 ,$0000 ,$0008
  972.     dc.w $0000,$0460 ,$0008 ,$0000 ,$0008
  973.     dc.w $0000,$0470 ,$0008 ,$0000 ,$0008
  974.     dc.w $0000,$0480 ,$0010 ,$0000 ,$0010
  975.     dc.w $0000,$04a0 ,$0008 ,$0000 ,$0008
  976.     dc.w $0000,$04b0 ,$0010 ,$0000 ,$0010
  977.     dc.w $0000,$04d0 ,$0010 ,$0000 ,$0010
  978.     dc.w $0000,$04f0 ,$0008 ,$0000 ,$0008
  979.     dc.w $0000,$0500 ,$0008 ,$0000 ,$0008
  980.     dc.w $0000,$0510 ,$0018 ,$0000 ,$0018
  981.  
  982.  
  983. WAVEFORMS:
  984. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  985. dc.w $3f37,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  986. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  987. dc.w $c037,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  988. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  989. dc.w $c0b8,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  990. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  991. dc.w $c0b8,$b027,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  992. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  993. dc.w $c0b8,$b0a8,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  994. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  995. dc.w $c0b8,$b0a8,$a017,$0f07,$ff07,$0f17,$1f27,$2f37
  996. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  997. dc.w $c0b8,$b0a8,$a098,$0f07,$ff07,$0f17,$1f27,$2f37
  998. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  999. dc.w $c0b8,$b0a8,$a098,$9007,$ff07,$0f17,$1f27,$2f37
  1000. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1001. dc.w $c0b8,$b0a8,$a098,$9088,$ff07,$0f17,$1f27,$2f37
  1002. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1003. dc.w $c0b8,$b0a8,$a098,$9088,$8007,$0f17,$1f27,$2f37
  1004. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1005. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$0f17,$1f27,$2f37
  1006. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1007. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9017,$1f27,$2f37
  1008. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1009. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$1f27,$2f37
  1010. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1011. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$a027,$2f37
  1012. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1013. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$a0a8,$2f37
  1014. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1015. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$a0a8,$b037
  1016. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1017. dc.w $7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1018. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1019. dc.w $817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1020. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1021. dc.w $8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1022. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1023. dc.w $8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1024. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1025. dc.w $8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1026. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1027. dc.w $8181,$8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1028. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1029. dc.w $8181,$8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1030. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1031. dc.w $8181,$8181,$8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f
  1032. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1033. dc.w $8181,$8181,$8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f
  1034. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1035. dc.w $8181,$8181,$8181,$8181,$817f,$7f7f,$7f7f,$7f7f
  1036. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1037. dc.w $8181,$8181,$8181,$8181,$8181,$7f7f,$7f7f,$7f7f
  1038. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1039. dc.w $8181,$8181,$8181,$8181,$8181,$817f,$7f7f,$7f7f
  1040. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1041. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$7f7f,$7f7f
  1042. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1043. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$817f,$7f7f
  1044. dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$8080
  1045. dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$7f7f
  1046. dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$8080
  1047. dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$807f
  1048. dc.w $8080,$8080,$8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f
  1049. dc.w $8080,$8080,$8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f
  1050. dc.w $8080,$8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1051. dc.w $8080,$8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1052. dc.w $8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1053. dc.w $8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1054. dc.w $8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1055. dc.w $8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1056. dc.w $8080,$9098,$a0a8,$b0b8,$c0c8,$d0d8,$e0e8,$f0f8
  1057. dc.w $0008,$1018,$2028,$3038,$4048,$5058,$6068,$707f
  1058. dc.w $8080,$a0b0,$c0d0,$e0f0,$0010,$2030,$4050,$6070
  1059. dc.w $4545,$797d,$7a77,$7066,$6158,$534d,$2c20,$1812
  1060. dc.w $04db,$d3cd,$c6bc,$b5ae,$a8a3,$9d99,$938e,$8b8a
  1061. dc.w $4545,$797d,$7a77,$7066,$5b4b,$4337,$2c20,$1812
  1062. dc.w $04f8,$e8db,$cfc6,$beb0,$a8a4,$9e9a,$9594,$8d83
  1063. dc.w $0000,$4060,$7f60,$4020,$00e0,$c0a0,$80a0,$c0e0
  1064. dc.w $0000,$4060,$7f60,$4020,$00e0,$c0a0,$80a0,$c0e0
  1065. dc.w $8080,$9098,$a0a8,$b0b8,$c0c8,$d0d8,$e0e8,$f0f8
  1066. dc.w $0008,$1018,$2028,$3038,$4048,$5058,$6068,$707f
  1067. dc.w $8080,$a0b0,$c0d0,$e0f0,$0010,$2030,$4050,$6070
  1068. endif
  1069.  
  1070. inton:    move.l    $6c.w,rette        ; inits a vblank-interrupt
  1071.     move.l    #intserv,$6c.w
  1072.     move.w    #$7fff,$dff09a
  1073.     move.w    #$8020,$dff09a
  1074.     move.w    #$c000,$dff09a
  1075.     rts
  1076.  
  1077. intoff:    move.l    rette,$6c.w        ; clears the interrupt
  1078.     move.w    #$7fff,$dff09a
  1079.     move.w    #$a02c,$dff09a
  1080.     move.w    #$c000,$dff09a
  1081.     moveq    #0,d0
  1082.     rts
  1083.  
  1084. intserv:movem.l    a0-a6/d0-d7,-(a7)    ; you can insert any 
  1085.     lea    $47107,a0        ; interrupt-server at this 
  1086.     lea    speeds,a1        ; place !!!
  1087.     move.w    #154,d2
  1088. sloop:    move.b    (a1)+,d0
  1089.     moveq    #5,d1
  1090.     sub.b    d0,d1
  1091.     add.b    d0,(a0)
  1092.     lea    8(a0),a0
  1093.     add.b    d0,(a0)
  1094.     lea    12(a0),a0
  1095.     dbra    d2,sloop    
  1096. fade:    lea    $470c2,a0
  1097.     lea    $47d22,a1
  1098.     move.w    merk,d0
  1099.     addi.w    d0,(a0)
  1100.     addi.w    d0,(a1)
  1101.     cmpi.w    #256,merk
  1102.     bne    ok1
  1103.     cmpi.w    #$f00,(a0)
  1104.     bne    ok
  1105.     neg.w    merk
  1106.     bra    ok
  1107. ok1:    cmpi.w    #$000,(a0)
  1108.     bne    ok
  1109.     neg.w    merk
  1110. ok:    move.w    #$0020,$dff09c
  1111.     movem.l    (a7)+,a0-a6/d0-d7
  1112.     rte
  1113.  
  1114. speeds:    
  1115.     dc.b     1,4,1,1,3,3,4,1,3,3,2,2,2,1,2,2
  1116.     dc.b     4,1,4,1,3,1,1,3,3,3,4,2,1,4,3,4
  1117.     dc.b     3,1,1,2,2,3,2,3,1,1,1,2,1,3,2,3
  1118.     dc.b     4,3,3,3,3,1,1,3,1,4,4,1,1,1,4,2
  1119.     dc.b     2,3,3,4,1,3,4,2,4,3,1,2,3,2,3,3
  1120.     dc.b     2,1,4,1,1,2,1,2,1,2,3,1,4,1,1,4
  1121.     dc.b     4,1,2,1,3,3,3,3,1,2,1,2,3,3,1,3
  1122.     dc.b     1,2,2,1,4,4,4,2,4,1,2,2,4,3,1,2
  1123.     dc.b     1,1,2,3,2,4,1,4,1,4,4,4,1,1,4,1
  1124.     dc.b     2,3,1,1,4,4,2,2,3,1,1,2,3,1,2,1
  1125.     dc.b     1,2,4,1,1,3,1,1,4,1,4,1,4,1,1,2
  1126.     dc.b     1,1,2,4,2,4,3,1,4,3,2,2,2,4,2,4
  1127.     dc.b     1,4,2,2,1,2,1,4,2,1,2,3,1,3,1,2
  1128.     dc.b     2,3,4,3,3,4,3,2,4,1,1,4,1,3,4,2
  1129.     dc.b     4,4,2,3,3,4,2,3,4,1,4,2,4,4,2,3
  1130.     dc.b     4,4,4,2,4,2,3,3,4,2,1,4,2,2,1,4
  1131. rette:    dc.l     0
  1132. pos:    dc.l    0
  1133. logo:    blk.b    8960,0
  1134. col1:    dc.w    0,$111,2,3,$114,$115,$226,$337,$448
  1135.     dc.w    $559,$66A,$88B,$99C,$BBD,$DDE,$FFF
  1136. m1:     dc.l    0
  1137. merk:    dc.w    256
  1138. timer:    dc.l    0
  1139. char:
  1140.     blk.b    1504,0
  1141. sine:
  1142.     blk.b     1280,0
  1143. font:
  1144.     blk.b    376,0
  1145. module:
  1146.     blk.b    6378,0
  1147. ascii:    dc.b    'abcdefghijklmnopqrstuvwxyz0123456789!?.:,"()-`'
  1148. even
  1149. ascii1:    dc.b    'abcdefghijklmnopqrstuvwxyz0123456789.:!?-(),"`'
  1150. even                                                 
  1151. my:    dc.b    'ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn'
  1152. even
  1153. text1:
  1154.     dc.b     2,2,2,2,2
  1155.         dc.b    '      this is the new angels intro !    ',1
  1156.     dc.b    2
  1157.     dc.b    '       supplied by malzam and andy      ',1
  1158.         dc.b    2
  1159.         dc.b    '       greetz to all angels member      ',1
  1160.         dc.b    0
  1161. text:    
  1162.     dc.b     '      make sure to call our boards      '
  1163.         dc.b    'amiga east whq : 804-499-2266   '
  1164.     dc.b    'escape zone : 704-254-6448  '
  1165.     dc.b    'digital expression : 813-398-7393  '
  1166.         dc.b    'house of insanity : 813-584-6089   '
  1167.         dc.b    'insider bbs : 39-564-415-697   '
  1168.         dc.b    'world trade center : 41-170-112-11323  '
  1169.         dc.b    'reign in blood : 49-203-406-0981  '
  1170.         dc.b    'skyfox bbs : 49-911-353-571   '
  1171.         dc.b    'the dutch pirate :31-011-723-666               '
  1172.         dc.b    0
  1173.